Function.RegisterNamespace("xUnit.js.Extensions.Attributes");

xUnit.js.Extensions.Attributes.MockDomAttribute=function(){
    // ctor
    function MockDomAttribute(){
        this.base("MockDom");
        if(!Object.IsType(Function,this.Target))throw new Error("xUnit.js.Extensions.Attributes.MockDomAttribute.ctor: unable to locate attribute target.");
        if(Object.IsType(Function,this.Target.GetDecoration)){
            var targetMethod=this.Target.GetDecoration().GetMethod();
            if(targetMethod.GetModel){
                var model=targetMethod.GetModel();
                if(Object.Implements(xUnit.js.Model.IMockable,model)){
                    model.AddMock(xUnit.js.Extensions.Mocks.Dom.GetDom());
                }
            }
        }
    }
    MockDomAttribute.apply(this,arguments);
}

xUnit.js.Extensions.Attributes.MockDomAttribute.Inherit(System.Script.Attributes.Attribute);
